The present invention is directed to a method and apparatus for creating a structured computer program, that is, a method and apparatus for creating a flowchart using a programmed computer which will automatically result in a structured program. In particular, the present invention relates to a method and apparatus for creating a flowchart such that any program code created from the flowchart will be a structured program.
There are numerous existing flowchart programs (see, for example, U.S. Pat. Nos. 4,546,435, 4,872,167, 4,852,047); however, none of the existing systems encourage, promote or require that the flowcharts which they create are structured according to the rigorous graphical notation used in the present invention. Source code or flowcharts which are not structured are said to be a "can of worms" or "spaghetti". There are degrees of "spaghetti" depending on the degree of deviation from pure structured flowchart or code. Non-structured flowcharts (or code derived from non-structured flowcharts) are known to have more errors and be more difficult to maintain than structured flowcharts or code.
Companies that deliver products with embedded computers (such as the products that telecommunication switching-equipment companies deliver) depend more and more heavily on software. This is because the value added to the product, the software included, is becoming a larger and larger part of the investment in the product. The intelligence provided by the software is more and more valuable to the customer.
Customers want products delivered ever faster. They want more intelligence in the products they buy. For systems such as, for example, telephone switches, this means more features in the switch. The features requested and desired become more complicated each year. However, companies have often had great difficulty in delivering software with the desired functionality on time and with high quality. The company able to deliver high-quality software on time, with the desired functionality with have a tremendous competitive advantage over a company that is not able to do this.
The larger the quantity of code in a product or project, the more important it is that the code be structured. Structured code is also a very important component of the method to use to develop correct code. Code that is correct upon delivery is much less expensive overall to create than code that must be corrected after delivery. The software designer is perhaps the most scarce and expensive resource in this process of code development. The designer's time must be used in an effective way. The most effective way for a software designer to use his time is to design and write structured code. This goal is difficult to achieve using today's software development tools, since it is left to the designer to ensure that the flowchart or code he is developing is structured.